Skip to main content

RSMS suite — master task list (TODO / in progress)

Living document. Only open work belongs here — remove items when shipped or consciously dropped. Completed migration work (Table + JSON writers, DuckDB retirement, prefetch v1, etc.) is not duplicated.

For normative contracts see rsms-results-storage-design and ssot/rsms-ssot.json.


References to other trackers (completed work lives there only as checklist history)

DocumentUse
rsms-results-table-storage-rework-planPhased rollout context; remaining ops/nits called out inline or below.
rsms-worker-implementation-planWorker W4 reference; visibility timeout renewal noted there.
archiveSuperseded Parquet/DuckDB-era specs — archaeology only.
rsms-automated-testing-scopeTest coverage backlog / priorities — not duplicate task rows here unless execution items.

Worker & queue (rsms-worker-function)

StatusTaskNotes
[ ]Queue visibility renewalLong RSMS runs can exceed RSMS_WORKER_VISIBILITY_TIMEOUT_SEC. queue_worker.py does not call update_message_visibility yet (see rsms-worker-implementation-plan.md W4 timeouts row). Decide renewal loop vs extending default timeout ops-only.
[ ]Tributary mainstem intersection — source of truthmainstem.py / app/results/mainstem_intersection.py only define Kanawha River → 716.2; ctl_builder.write_ctl_and_placeholders still writes SPILL_RIVER_MILE from resolve_mainstem_intersection for tributary spills (separate from RMI_STRUCTURE_FILE). Verify whether junction miles are fully encoded in the per-basin .rmi / RiverMileIndex.csv blob (and can replace the static map + optional scenario field), or whether each enabled tributary needs an explicit value. Run at least one non-Kanawha tributary spill end-to-end and document the contract.

API (rsms-api-fastapi)

StatusTaskNotes
[ ]GET …/results/edge-profileRouter returns 404 and directs clients to edge-timeseries. Decide: implement profile slice for legacy parity, 410 Gone, or leave as-is and align docs/clients.
[ ]Results performanceOptional: stricter request timeouts, shallow caching, or perf notes per environment (only if measured need).

Results integrity & UX

StatusTaskNotes
[ ]Plume river-mile axis (empty RM arrays)rsms-plume-river-mile-axis-known-issue — investigation parked; blocks dual-axis CXPLT when mainstem_river_mile/tributary_river_mile are [].
[ ]Simulation hour float precision (UI vs API)CXPLT hour slider shows whole hours; hour state / GET …/export/geojson?hour= can carry IEEE noise (e.g. 11.690000000000001 on Results Download GeoJSON label). Likely slider ↔ domain rounding mismatch; align with JSON_ROUND_HOURS_DECIMAL_PLACES / round_hour_coordinate end-to-end (API query param, React state, button copy).
[ ]Legacy charts 2 & 5 (full CTPLT parity)Product/science backlog — consumes same float32 grid as MVP charts; deferred section in ssot/rsms-ssot.json. rsms-results-storage-design.md §8 — design questions, not MVP blockers for chart 1 / fixed slices.

Frontend (rsms-frontend-react)

StatusTaskNotes
[ ]Prefetch policy (optional)If profiling shows hidden-tab ResultsPage work still hurts Maps, add defer heavy series until Results is foreground (rsms-results-prefetch-design — optional layer).
[ ]Task 4 — Phase 3 context overlaysPilots A (L00) and B (L08) shipped. Next candidates: L01 NPDES, L05/L06 pipeline & rail crossings — see rsms-task4-and-r5-layer-catalog.md, rsms-threat-layers-backlog.md. Map/UI only; no Fortran changes.
[ ]USGS curated station list — refresh vs NWIS (deferred; after Task 4)Legacy USGS_Stations_* inventory may include discontinued sites or miss new gages. Reconcile curated GeoJSON against waterservices site (active ST sites, HUC/RiversXref river scope); drop discontinued, add new, document refresh cadence. See rsms-threat-layers-backlog.md L00 follow-up.

Azure ops & observability

StatusTaskNotes
[ ]Results tables — staging/prod parityRBAC, connection strings/App Settings aligned across envs — see rsms-results-table-storage-rework-plan.md § Azure ops.
[ ]Measured read latencyDocument P95 (or comparable) Table + blob reads vs Sudhir ~0.13 s point-read benchmark — tune optional in-memory caching if warranted.

Testing & quality

StatusTaskNotes
[ ]Frontend automated testsNo *.spec.*/*.test.* under rsms-frontend-react/src today; rsms-automated-testing-scope.md suggests Vitest + MSW/Playwright for auth + RBAC + one scenario/results flow.
[ ]Worker full engine CIOptional tier: EXEs + fixture CTL (rsms-automated-testing-scope.md §10) — skip by default unless dedicated pipeline exists.

Bump meta.schemaVersion in ssot/rsms-ssot.json only when behavioral contracts change, not when this task list alone changes.